#//usr/bin/perl
#perl extract-title-description.pl [argument=fichierRSS]
#en sortie : 2 fichers
#31.1 fichier txt : concaténant les titres et descriptions
#1 fichier XML : mêmes infos structurés en XML

my $ensemble="";
open(FILEIN, "<:encoding(utf8)", $ARGV[0]);
open(FILEOUT, ">:encoding(utf8)", "sortie.txt");
while (my $ligne=<FILEIN>) { #ici my $ligne indique que $ligne n'existe que dans cette zone : my permet de limiter la portée d'une variable. si on déclare aussi $ligne au début et qu'on la print à la fin : on aura juste la dernière valeur prise par $ligne dans le programme
#chomp : enlève seulement retour à la ligne s'il existe
#chop : enlève n'importe quel caractère
#$ligne=~s/\n//; -> pour reconnaître le \n
	chomp $ligne;
	#$ligne=~s/^ +//; #remplace tous les blancs en début de ligne par rien : pas sûr que ce soit la meilleure solution. on peut aussi faire un traitement ) la fin de la concaténation pour enlever les blancs entre > < (chevron fermant d'une balise et chevron ouvrant de la suivante)
	#$ligne=~s/ $//; #remplace tous les blancs en fin de ligne par rien
	$ensemble = $ensemble . $ligne;
}


#print $ensemble;
#post nettoyage : supprimer les blancs entre balises...
# A FAIRE :...
# parcours de $ensemble à la recherche des titres

while($ensemble =~m/<item>.*?<title>(.+?)<\/title>.*?<description>(.+?)<\/description>.*?<\/item>/g){
	my $title=$1;
	my $description=$2;
	my ($titlepropre,$descriptionpropre) = &nettoyage ($title,$description); # & = exécute cette procédure ! 
	print FILEOUT "TITRE : $titlepropre\n";
	print FILEOUT "DESCRIPTION : $descriptionpropre\n";
#	print"==>appuie sur return pour continuer <==\n";
#my $reponse = <STDIN>;

}
#while($ensemble=~/<title>([^<]*?)<\/title>/g) { #ou (.+?) mais alors ne prend pas en compte le problème du chevron ouvrant + le g indique au programme d'avancer à la position suivante du segment qu'on recherche à chaque fois que le programme en trouve un
#	print FILEOUT "titre : ",$1,"\n";
#}
#while($ensemble=~/<description>([^<]*?)<\/description>/g) {
#	print FILEOUT  "description : ",$1,"\n";
#}


close FILEIN;
close FILEOUT;
#A FAIRE : ne prendre que les title + description dans un <item> + assembler le titre avec sa description (un seul while)

#while($ensemble=~/<item><title>([^<]*?)<\/title>.*?<description>([^<]*?)<\/description>/g) {

	#print "titre : ",$1,"\n";
	#print "description : ",$2,"\n";

#}

sub nettoyage { 

#my $var1 = $_[0];
my $var1 = shift(@_);
my $var2 = shift(@_);

$var1=~s/&lt;.+?&gt;//g; # à compléter car on ne peut pas tout nettoyer avec seulement cette ligne de code 
$var2=~s/&lt;.+?&gt;//g;
return $var1,$var2;
}